// 全局状态
let currentQuestionIndex = 0;
let selectedAnswers = [];
let resultScores = [0, 0, 0, 0, 0, 0, 0]; // 7个结果的累计分数
let totalQuestions = questionsData.length;
let isTestCompleted = false; // 标记测试是否已完成

// 统一的页面切换函数（带动画）
function switchPage(targetPageId, direction = 'forward') {
    const allPages = document.querySelectorAll('.page');
    const targetPage = document.getElementById(targetPageId);
    
    // 先隐藏所有页面
    allPages.forEach(page => {
        if (page.classList.contains('active')) {
            // 当前活动页面淡出
            page.style.opacity = '0';
            setTimeout(() => {
                page.classList.remove('active');
                page.style.opacity = '';
            }, 300);
        }
    });
    
    // 设置目标页面的进入动画
    targetPage.classList.remove('slide-in-left', 'slide-in-right');
    targetPage.classList.add(direction === 'back' ? 'slide-in-left' : 'slide-in-right');
    
    // 延迟显示目标页面并触发动画
    setTimeout(() => {
        targetPage.classList.add('active');
        // 动画完成后清理
        setTimeout(() => {
            targetPage.classList.remove('slide-in-left', 'slide-in-right');
        }, 600);
    }, 300);
}

// 开始测试
function startTest() {
    // 如果测试未完成，不允许重新开始（除非是从结果页返回）
    if (!isTestCompleted && currentQuestionIndex > 0) {
        return;
    }
    
    currentQuestionIndex = 0;
    selectedAnswers = [];
    resultScores = [0, 0, 0, 0, 0, 0, 0];
    isTestCompleted = false;
    
    // 立即隐藏所有页面，确保它们都不显示
    const allPages = document.querySelectorAll('.page');
    allPages.forEach(page => {
        page.classList.remove('active');
    });
    
    // 立即显示答题页面
    const questionPage = document.getElementById('question-page');
    questionPage.classList.add('active');
    
    // 清除之前的动画类，添加新的滑入动画
    questionPage.classList.remove('slide-in-left', 'slide-in-right');
    // 使用 requestAnimationFrame 确保在下一帧添加动画，避免闪烁
    requestAnimationFrame(() => {
        questionPage.classList.add('slide-in-right');
        // 延迟清理动画类
        setTimeout(() => {
            questionPage.classList.remove('slide-in-left', 'slide-in-right');
        }, 600);
    });
    
    // 延迟显示题目内容，避免鼠标位置导致的hover效果
    setTimeout(() => {
        showQuestion();
    }, 50);
}

// 欢迎页：点击任意位置进入答题（仅在欢迎页激活时生效）
document.addEventListener('DOMContentLoaded', () => {
    const startPage = document.getElementById('start-page');
    const handleStart = (e) => {
        // 只在欢迎页激活时响应
        if (startPage.classList.contains('active')) {
            e.preventDefault();
            e.stopPropagation();
            startTest();
        }
    };
    // 点击欢迎页任意位置
    startPage.addEventListener('click', handleStart);
});

// 显示当前题目
function showQuestion() {
    const question = questionsData[currentQuestionIndex];
    
    // 设置背景图片
    const questionPage = document.getElementById('question-page');
    if (question.background) {
        questionPage.style.backgroundImage = `url(${question.background})`;
        questionPage.style.backgroundSize = 'cover';
        questionPage.style.backgroundPosition = 'center center';
        questionPage.style.backgroundRepeat = 'no-repeat';
    }
    
    // 显示标题
    document.getElementById('question-header').textContent = question.header;
    
    // 显示题目描述
    document.getElementById('question-title').textContent = question.title;
    
    // 生成选项
    const optionsContainer = document.getElementById('options-container');
    optionsContainer.innerHTML = '';
    
    const optionLetters = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
    question.options.forEach((option, index) => {
        const optionElement = document.createElement('div');
        optionElement.className = 'option-item';
        optionElement.innerHTML = `<span class="option-letter">${optionLetters[index]}.</span><span class="option-text">${option.text}</span>`;
        optionElement.onclick = () => selectOption(index);
        optionsContainer.appendChild(optionElement);
    });
}

// 选择选项
function selectOption(optionIndex) {
    // 添加选中效果
    const options = document.querySelectorAll('.option-item');
    options.forEach(opt => opt.classList.remove('selected'));
    options[optionIndex].classList.add('selected');
    
    // 记录答案并累加分数
    const question = questionsData[currentQuestionIndex];
    const selectedOption = question.options[optionIndex];
    
    selectedAnswers.push(optionIndex);
    
    // 累加到7个结果类型
    for (let i = 0; i < resultScores.length; i++) {
        resultScores[i] += selectedOption.scores[i];
    }
    
    // 延迟跳转下一题
    setTimeout(() => {
        nextQuestion();
    }, 500);
}

// 下一题
function nextQuestion() {
    currentQuestionIndex++;
    
    if (currentQuestionIndex < totalQuestions) {
        // 题目切换动画：先淡出，再淡入新题目
        const questionContainer = document.querySelector('.question-container');
        if (questionContainer) {
            questionContainer.classList.add('fade-out');
            setTimeout(() => {
                showQuestion();
                questionContainer.classList.remove('fade-out');
                questionContainer.classList.add('fade-in');
                setTimeout(() => {
                    questionContainer.classList.remove('fade-in');
                }, 400);
            }, 300);
        } else {
            showQuestion();
        }
    } else {
        showResult();
    }
}

// 显示结果
function showResult() {
    // 只有在答完所有题目后才显示结果页（此时 currentQuestionIndex 应该等于 totalQuestions）
    if (currentQuestionIndex !== totalQuestions) {
        return; // 如果还有题目未答完，不显示结果
    }
    
    isTestCompleted = true; // 标记测试已完成
    
    // 找出最高分的结果
    const maxScore = Math.max(...resultScores);
    const topResults = [];
    
    for (let i = 0; i < resultScores.length; i++) {
        if (resultScores[i] === maxScore) {
            topResults.push(i);
        }
    }
    
    // 如果有多个相同最高分，使用权重优先级
    let finalResultId;
    if (topResults.length === 1) {
        finalResultId = topResults[0];
    } else {
        // 按权重优先级选择
        for (let priority of tieBreaker) {
            if (topResults.includes(priority)) {
                finalResultId = priority;
                break;
            }
        }
    }
    
    const result = resultTypes[finalResultId];

    // 结果图片文件名映射（处理"提博尔特/提拔尔特"文件名差异）
    const resultImageNameMap = {
        0: '罗密欧',
        1: '朱丽叶',
        2: '茂丘西奥',
        3: '奶妈',
        4: '提拔尔特',
        5: '班伏里奥',
        6: '亲王'
    };
    const imageBaseName = resultImageNameMap[finalResultId] || result.name;
    const resultImageEl = document.getElementById('result-image');
    resultImageEl.src = `src/${imageBaseName}.jpg`;
    resultImageEl.alt = `你是 ${result.name}`;

    // 隐藏原有文字内容，保持与欢迎页一致的纯图片展示
    const resultContent = document.querySelector('#result-page .result-content');
    if (resultContent) {
        resultContent.style.display = 'none';
    }

    // 确保欢迎页和答题页都隐藏，只显示结果页
    const startPage = document.getElementById('start-page');
    const questionPage = document.getElementById('question-page');
    startPage.classList.remove('active');
    questionPage.classList.remove('active');

    // 切换到结果页面（向前）
    switchPage('result-page', 'forward');
    
    // 控制台输出详细分数（调试用）
    console.log('各结果分数:', resultScores);
    console.log('最终结果:', result.name);
}

// 重新测试（只能在完成所有题目后使用）
function restartTest() {
    // 只有在测试完成后才能重新测试
    if (!isTestCompleted) {
        return;
    }
    
    // 切换到开始页面（向后，返回）
    switchPage('start-page', 'back');
}

